﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace sqszerelo.BO
{
    public class Munkalap
    {

        /// <summary>
        /// length: 1-60
        /// </summary>
        private string _Munkafelvevo;
        private DateTime _Felvetel;
        private Vevo _Vevo = new Vevo();
        private Gepjarmu _Jarmu = new Gepjarmu();
        private List<AnyagFelhasznalas> _Anyagok = new List<AnyagFelhasznalas>();
        private List<Munkafolyamat> _Munkafolyamatok = new List<Munkafolyamat>();
        private bool _Lezarva = false;

        public bool Lezarva
        {
            get { return _Lezarva; }
            set { _Lezarva = value; }
        }


        public AnyagFelhasznalas[] Anyagok
        {
            get
            {
                return _Anyagok.ToArray();
            }
        }

        public int Ar
        {
            get
            {
                return _Anyagok.Sum((a) => a.Darab * a.Anyag.Ar) +
                       _Munkafolyamatok.Sum((m) => m.MunkaHossza * m.Ar);
            }
        }

        public DateTime Felvetel
        {
            get
            {
                return _Felvetel;
            }
            set
            {
                _Felvetel = value;
            }
        }

        public string Munkafelvevo
        {
            get
            {
                return _Munkafelvevo;
            }
            set
            {
                _Munkafelvevo = value;
            }
        }

        public string MunkafelvevoIsValid()
        {
            return String.IsNullOrWhiteSpace(_Munkafelvevo) ? "A munkafelvevő neve nem lehet üres" : null;
        }

        public List<Munkafolyamat> Munkafolyamatok
        {
            get
            {
                return _Munkafolyamatok;
            }
        }

        public Gepjarmu Jarmu
        {
            get
            {
                return _Jarmu;
            }
        }

        public Vevo Vevo
        {
            get
            {
                return _Vevo;
            }
        }

        /// 
        /// <param name="anyag"></param>
        /// <param name="darab"></param>
        public void AddAnyag(Anyag anyag, int darab)
        {
            AnyagFelhasznalas af = _Anyagok.FirstOrDefault((a) => a.Anyag == anyag);

            if (af == null)
            {
                af = new AnyagFelhasznalas() { Anyag = anyag, Darab = 0 };
            }

            ++af.Darab;
        }

    }
}
